<template>
    <div class="wrapper">

        <!-- header部分 -->
        <header>
            <p>商家信息</p>
        </header>
        <!-- 商家logo部分 -->
        <div class="business-logo">
            <img :src="business.businessImg">
        </div>
        
        <!-- 商家信息部分 -->
        <div class="business-info">
            <h1>{{business.businessName}}</h1>
            <p>&#165;{{business.starPrice}}起送 &#165;{{business.deliveryPrice}}配送</p>
            <p>{{business.businessExplain}}</p>
        </div>
        
        <!-- 食品列表部分 -->
        <ul class="food">
            <li v-for="(items,index) in foodArray" :key="index">
                <div class="food-left">
                    <img :src="items.foodImg">
                    <div class="food-left-info">
                        <h3>{{items.foodName}}</h3>
                        <p>{{items.foodExplain}}</p>
                        <p>&#165;{{items.foodPrice}}</p>
                    </div>
                </div>

                <div class="food-right">
                    <div>
                        <i v-show="items.quantity!=0" class="fa fa-minus-circle" @click="minus(index)"></i>
                    </div>
                    <p><span v-show="items.quantity!=0">{{items.quantity}}</span></p>
                    <div>
						<!-- 根据选择的食品索引值加减 -->
                        <i class="fa fa-plus-circle" @click="add(index)"></i>
                    </div>
                </div>
            </li>
        </ul>
        
        <!-- 购物车部分 -->
        <div class="cart">
            <div class="cart-left">
                <div class="cart-left-icon">
                    <i class="fa fa-shopping-cart"></i>
                    <div v-show="quant()!=0" class="cart-left-icon-quantity">{{quant()}}</div>
                </div>
                <div class="cart-left-info">
                    <p>&#165;{{price()}}</p>
                    <p>另需配送费{{business.deliveryPrice}}元</p>
                </div>
            </div>
            <div class="cart-right">
                <!-- 不够起送费 -->
                
                <div v-show="price()<business.starPrice"  class="cart-right-item-true">
                    &#165;{{business.starPrice}}起送
                </div>
               
                <!-- 达到起送费 -->
                <div  class="cart-right-item" @click="toAddOrder()">
                    去结算
                </div>
            </div>
        </div>

    </div>	
</template>
<script>
export default {
    data() {
        return {
            businessId:this.$route.query.businessId,
            business:{},
            foodArray:[],
			user:{}
		}
    },
    created() {
        // 调用getSessionStorage从SessionStorage中获取用户的信息
        this.user = this.$getSessionStorage('user');
		this.$setSessionStorage('businessId',this.businessId)
        // 向后台发送ajax请求,并将后台返回的数据赋值给business对象
        this.$axios.post('BusinessController/getBusinessById',this.$qs.stringify({
            businessId:this.businessId
        })).then(response=>{
            this.business = response.data;
        }).catch(error=>{
            console.log(error)
        }),
        // 根据商家编号查询商家所属的食品的信息
        this.$axios.post('FoodController/listFoodByBusinessId',this.$qs.stringify({
            businessId:this.businessId
        })).then(response=>{
            this.foodArray = response.data;
			for(let foodItem of this.foodArray){
				foodItem.quantity=0;
				// this.foodArray.sort();
				}
			if(this.user != null) {
			//查询购物车
			this.listCart();
        }
        }).catch(error=>{
            console.log(error)
        })
        // 如果已经登录,就需要去查询购物车当中是否已经选购了某个食品
       
    },
    methods:{
        // 查询购物车当中是否已经选购了某个食品
		listCart(){
			//通过axios向后台发送异步请求,后台访问路径CartController/listCart
		this.$axios.post('CartController/listCart',this.$qs.stringify({
			userId:this.user.userId,
            businessId:this.businessId
        })).then(response=>{
			let cartArr = response.data;
			for(let foodItem of this.foodArray){
				foodItem.quantity=0;
				for(let cartItem of cartArr){
					if(cartItem.foodID==foodItem.foodId){
						foodItem.quantity=cartItem.quantity
					}
				}
			}
			this.foodArray.sort();
        }).catch(error=>{
            console.log(error)
        })
		},
		 add(index){
         // 判断用户是否存在,如果不存在就登录
            if(this.user == null) {
                this.$router.push({
                    path:'/login'
                })
                return;
            }
			if(this.foodArray[index].quantity==0){
				
				this.saveCart(index);
			}else{
				this.updateCart(index,1);
			}
			},
			minus(index){
            // 判断用户是否存在,如果不存在就登录
            if(this.user == null) {
                this.$router.push({
                    path:'/login'
                })
                return;
            }
			if(this.foodArray[index].quantity>1){
				this.updateCart(index,-1);
			}else{
				this.removeCart(index);

			}
				//如果foodArray数组中的食品的数量大于一,就可以调用updatecart()方法更新数据
				//否则调用removecart()方法删	
        },
			//1.问题foodarr中没有数量,如何解决?  可以对原有的数组遍历,没遍历一次,拿到一个对象fooditem
			//fooditem.数量=0
		// 	//2.问题foodarr数组中的某个食品的数量如何与购物车中的数量匹配
		// 	//需要遍历购物车列表,根绝foodid判断是否和fooditem相等,
		// 	//如果相等将购物车数量赋值给fooditem中的数量
		saveCart(index){
			//通过axios向后台发送异步请求,后台访问路径CartController/saveCart
				this.$axios.post('CartController/saveCart',this.$qs.stringify({
					userId:this.user.userId,
					businessId:this.businessId,
					foodId:this.foodArray[index].foodId
				})).then(response=>{
					if(response.data==1){
						this.foodArray[index].quantity=1
						this.foodArray.sort();
					}else{
						alert('小主,添加失败了,再试一次吧,别饿哭了')
					}
				}).catch(error=>{
					console.log(error)
				})
			//判断response.data是否为1,1成功了,n那么将当前食品中的数量设置为1
			//否则提示添加失败
		},
		updateCart(index,num){
			//通过axios向后台发送异步请求,后台访问路径CartController/updateCart
			this.$axios.post('CartController/updateCart',this.$qs.stringify({
					quantity:this.foodArray[index].quantity+num,
					userId:this.user.userId,
					businessId:this.businessId,
					foodId:this.foodArray[index].foodId
				})).then(response=>{
					if(response.data==1){
						this.foodArray[index].quantity+=num;
						this.foodArray.sort();
					}
				}).catch(error=>{
					console.log(error)
				})
		},
		
			//实现加的操作
			//如果foodArray数组中的食品的数量为零,就可以调用savecart(index)添加,
			//否则调用updatecart()来更新
			// 定义减
			removeCart(index){
			//通过axios向后台发送异步请求,后台访问路径CartController/removeCart
			this.$axios.post('CartController/removeCart',this.$qs.stringify({
					userId:this.user.userId,
					businessId:this.businessId,
					foodId:this.foodArray[index].foodId
				})).then(response=>{
					if(response.data==1){
						this.foodArray[index].quantity=0
						this.foodArray.sort();
					}else{
						alert('删除失败了')
					}
				}).catch(error=>{
					console.log(error)
				})
				},
      
//结算判断是否有用户地址
		toAddOrder(){
			this.$axios.post('DeliveryAddressController/listDeliveryAddressByUserId',this.$qs.stringify({
            userId:this.user.userId
			})).then(response=>{
				let addressArr = response.data;
				if(addressArr.length!=0){
					this.$router.push({
					path:'/order',
					query:{
					// businessId:this.businessId,

					///////////////////////////////////
					daId:addressArr[0].daId
					}
				})
				}else{
				alert('小主,你还没有收货地址,快去添加吧!')
				this.$router.push({path:'/add'})
				}
			}).catch(error=>{
				console.log(error)
			})
		}





        },
		computed:{
			// 购买的总数量
			quant(){
			return function(){
				let b = 0;
				for(let a = 0;a<this.foodArray.length;a++){
					b+=this.foodArray[a].quantity;
				}
				return b;
			}
			},
			//除去配送费的总价格
			price(){
				return function(){
					let b =0;
				for(let a = 0;a<this.foodArray.length;a++){
					let d = this.foodArray[a].quantity*this.foodArray[a].foodPrice
					b+=d;
				}
				return b;
				}
			},

			//总价
			// allmonery(){
			// 	return function(){
			// 		let j = this.price()
			// 	let g = this.business.deliveryPrice+j
			// 	return g;
			// 	}
			// }
	}
	}


</script>

<style scoped>
/****************** 总容器 ******************/
.wrapper{
	width: 100%;
	height: 100%;
}

/****************** header部分 ******************/
.wrapper header{
	width: 100%;
	height: 12vw;
	background-color: #0097FF;
	color: #fff;
	font-size: 4.8vw;
	
	position: fixed;
	left: 0;
	top: 0;
	z-index: 1000;
	
	display: flex;
	justify-content: center;
	align-items: center;
}

/****************** 商家logo部分 ******************/
.wrapper .business-logo{
	width: 100%;
	height: 35vw;
	/*使用上外边距避开header部分*/
	margin-top: 12vw;
	
	display: flex;
	justify-content: center;
	align-items: center;
}
.wrapper .business-logo img{
	width: 40vw;
	height: 30vw;
	border-radius: 5px;
}

/****************** 商家信息部分 ******************/
.wrapper .business-info{
	width: 100%;
	height: 20vw;
	
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
}
.wrapper .business-info h1{
	font-size: 5vw;
}
.wrapper .business-info p{
	font-size: 3vw;
	color: #666;
	margin-top: 1vw;
}

/****************** 食品列表部分 ******************/
.wrapper .food{
	width: 100%;
	/*使用下外边距避开footer部分*/
	margin-bottom: 14vw;
}
.wrapper .food li{
	width: 100%;
	box-sizing: border-box;
	padding: 2.5vw;
	user-select: none;
	
	display: flex;
	justify-content: space-between;
	align-items: center;
}
.wrapper .food li .food-left{
	display: flex;
	align-items: center;
}
.wrapper .food li .food-left img{
	width: 20vw;
	height: 20vw;
}
.wrapper .food li .food-left .food-left-info{
	margin-left: 3vw;
}
.wrapper .food li .food-left .food-left-info h3{
	font-size: 3.8vw;
	color: #555;
}
.wrapper .food li .food-left .food-left-info p{
	font-size: 3vw;
	color: #888;
	margin-top: 2vw;
}
.wrapper .food li .food-right{
	width: 16vw;
	display: flex;
	justify-content: space-between;
	align-items: center;
}
.wrapper .food li .food-right .fa-minus-circle{
	font-size: 5.5vw;
	color: #999;
	cursor: pointer;
}
.wrapper .food li .food-right p{
	font-size: 3.6vw;
	color: #333;
}
.wrapper .food li .food-right .fa-plus-circle{
	font-size: 5.5vw;
	color: #0097EF;
	cursor: pointer;
}

/****************** 购物车部分 ******************/
.wrapper .cart{
	width: 100%;
	height: 14vw;
	
	position: fixed;
	left: 0;
	bottom: 0;
	
	display: flex;
}
.wrapper .cart .cart-left{
	flex: 2;
	background-color: #505051;
	display: flex;
}
.wrapper .cart .cart-left .cart-left-icon{
	width: 16vw;
	height: 16vw;
	box-sizing: border-box;
	border: solid 1.6vw #444;
	border-radius: 8vw;
	background-color: #3190E8;
	font-size: 7vw;
	color: #fff;
	
	display: flex;
	justify-content: center;
	align-items: center;
	
	margin-top: -4vw;
	margin-left: 3vw;
	
	position: relative;
}
.wrapper .cart .cart-left .cart-left-icon-quantity{
	width: 5vw;
	height: 5vw;
	border-radius: 2.5vw;
	background-color: red;
	color: #fff;
	font-size: 3.6vw;
	
	display: flex;
	justify-content: center;
	align-items: center;
	
	position: absolute;
	right: -1.5vw;
	top: -1.5vw;
}
.wrapper .cart .cart-left .cart-left-info p:first-child{
	font-size: 4.5vw;
	color: #fff;
	margin-top: 1vw;
}
.wrapper .cart .cart-left .cart-left-info p:last-child{
	font-size: 2.8vw;
	color: #AAA;
}

.wrapper .cart .cart-right{
	flex: 1;
}
/*达到起送费时的样式*/
.wrapper .cart .cart-right .cart-right-item{
	width: 100%;
	height: 100%;
	background-color: #38CA73;
	color: #fff;
	font-size: 4.5vw;
	font-weight: 700;
	user-select: none;
	cursor: pointer;
	
	display: flex;
	justify-content: center;
	align-items: center;
}

/*不够起送费时的样式（只有背景色和鼠标样式的区别）*/

.wrapper .cart .cart-right .cart-right-item-true{
	width: 100%;
	height: 100%;
	background-color: #535356;
	color: #fff;
	font-size: 4.5vw;
	font-weight: 700;
	user-select: none;
	
	display: flex;
	justify-content: center;
	align-items: center;
}

</style>